import router from "@/router";
import { useUserStore, usePermissionStore } from "@/store";
import NProgress from "@/utils/nprogress";
import { RouteRecordRaw } from "vue-router";

export function setupPermission() {
  // 白名单路由
  const whiteList = ["/login"];

  router.beforeEach(async (to, from, next) => {
    NProgress.start();
    // const hasToken = localStorage.getItem("accessToken");
    // if (hasToken) {
    //   if (to.path === "/login") {
    //     // 如果已登录，跳转首页
    //     next({ path: "/" });
    //     NProgress.done();
    //   } else {
    //     const userStore = useUserStore();
    //     const hasRoles =
    //       userStore.user.roles && userStore.user.roles.length > 0;
    //     if (hasRoles) {
    //       // 未匹配到任何路由，跳转404
    //       if (to.matched.length === 0) {
    //         from.name ? next({ name: from.name }) : next("/404");
    //       } else {
    //         next();
    //       }
    //     } else {
    //       const permissionStore = usePermissionStore();
    //       try {
    //         const { roles } = await userStore.getUserInfo();
    //         const accessRoutes = await permissionStore.generateRoutes(roles);
    //         accessRoutes.forEach((route: RouteRecordRaw) => {
    //           router.addRoute(route);
    //         });
    //         next({ ...to, replace: true });
    //       } catch (error) {
    //         // 移除 token 并跳转登录页
    //         await userStore.resetToken();
    //         next(`/login?redirect=${to.path}`);
    //         NProgress.done();
    //       }
    //     }
    //   }
    // } else {
    //   // 未登录可以访问白名单页面
    //   if (whiteList.indexOf(to.path) !== -1) {
    //     next();
    //   } else {
    //     next(`/login?redirect=${to.path}`);
    //     NProgress.done();
    //   }
    // }
    const permissionStore = usePermissionStore();
    permissionStore.setRoutes([]);
    next();
  });

  router.afterEach(() => {
    NProgress.done();
  });
}
